package gemini.castor.ui.client.mvp.gin;

import gemini.castor.ui.client.mvp.PlaceRequestManager;
import gemini.castor.ui.client.page.RootPresenter;
import gemini.castor.ui.client.page.content.account.accountinfo.AccountInfoPresenter;
import gemini.castor.ui.client.page.content.account.accountinfo.form.AccountInfoFormPresenter;
import gemini.castor.ui.client.page.content.account.mydownline.MyDownlinePresenter;
import gemini.castor.ui.client.page.content.account.mydownline.form.MyDownlineFormPresenter;
import gemini.castor.ui.client.page.content.account.myorder.MyOrderPresenter;
import gemini.castor.ui.client.page.content.account.myorder.form.MyOrderFormPresenter;
import gemini.castor.ui.client.page.content.account.mysponsor.MySponsorPresenter;
import gemini.castor.ui.client.page.content.account.mysponsor.form.MySponsorFormPresenter;
import gemini.castor.ui.client.page.content.account.volumepoint.VolumePointPresenter;
import gemini.castor.ui.client.page.content.account.volumepoint.form.VolumePointFormPresenter;
import gemini.castor.ui.client.page.content.customer.careschedule.CareSchedulePresenter;
import gemini.castor.ui.client.page.content.customer.careschedule.form.CareScheduleFormPresenter;
import gemini.castor.ui.client.page.content.customer.customerlist.CustomerPresenter;
import gemini.castor.ui.client.page.content.customer.customerlist.edit.CustomerEditPresenter;
import gemini.castor.ui.client.page.content.customer.customerlist.list.CustomerListPresenter;
import gemini.castor.ui.client.page.content.home.apply.ApplyPresenter;
import gemini.castor.ui.client.page.content.home.apply.checkout.CheckOutFormPresenter;
import gemini.castor.ui.client.page.content.home.apply.contractagreement.ContractAgreementFormPresenter;
import gemini.castor.ui.client.page.content.home.apply.distributorid.DistributorIDFormPresenter;
import gemini.castor.ui.client.page.content.home.apply.personalinfo.PersonalInfoFormPresenter;
import gemini.castor.ui.client.page.content.home.register.RegisterPresenter;
import gemini.castor.ui.client.page.content.home.register.confirminfo.ConfirmInfoFormPresenter;
import gemini.castor.ui.client.page.content.home.register.distributorid.DistributorIDPresenter;
import gemini.castor.ui.client.page.content.home.register.inputaccount.InputAccountFormPresenter;
import gemini.castor.ui.client.page.content.home.search.SearchPresenter;
import gemini.castor.ui.client.page.content.home.search.form.SearchFormPresenter;
import gemini.castor.ui.client.page.content.information.aboutcompany.AboutCompanyPresenter;
import gemini.castor.ui.client.page.content.information.aboutcompany.form.AboutCompanyFormPresenter;
import gemini.castor.ui.client.page.content.information.aboutproduct.AboutProductPresenter;
import gemini.castor.ui.client.page.content.information.aboutproduct.form.AboutProductFormPresenter;
import gemini.castor.ui.client.page.content.information.bussinessmethod.BussinessMethodsPresenter;
import gemini.castor.ui.client.page.content.information.bussinessmethod.form.BussinessMethodsFormPresenter;
import gemini.castor.ui.client.page.content.information.library.LibraryPresenter;
import gemini.castor.ui.client.page.content.information.library.form.LibraryFormPresenter;
import gemini.castor.ui.client.page.content.information.maketingplan.MaketingPlanPresenter;
import gemini.castor.ui.client.page.content.information.maketingplan.form.MaketingPlanFormPresenter;
import gemini.castor.ui.client.page.content.information.stepbystep.StepByStepPresenter;
import gemini.castor.ui.client.page.content.information.stepbystep.form.StepByStepFormPresenter;
import gemini.castor.ui.client.page.content.information.successstories.SuccessStoriesPresenter;
import gemini.castor.ui.client.page.content.information.successstories.form.SuccessStoriesFormPresenter;
import gemini.castor.ui.client.page.content.office.events.EventsPresenter;
import gemini.castor.ui.client.page.content.office.events.edit.EventsEditPresenter;
import gemini.castor.ui.client.page.content.office.events.list.EventsListPresenter;
import gemini.castor.ui.client.page.content.office.messegercenter.MessegerCenterPresenter;
import gemini.castor.ui.client.page.content.office.messegercenter.form.MessegerCenterFormPresenter;
import gemini.castor.ui.client.page.content.office.mystory.MyStoryPresenter;
import gemini.castor.ui.client.page.content.office.mystory.form.MyStoryFormPresenter;
import gemini.castor.ui.client.page.content.office.news.NewsPresenter;
import gemini.castor.ui.client.page.content.office.news.form.NewsFormPresenter;
import gemini.castor.ui.client.page.content.office.promotions.PromotionsPresenter;
import gemini.castor.ui.client.page.content.office.promotions.form.PromotionsFormPresenter;
import gemini.castor.ui.client.page.content.office.recognitions.RecognitionsPresenter;
import gemini.castor.ui.client.page.content.office.recognitions.form.RecognitionsFormPresenter;
import gemini.castor.ui.client.page.content.office.todolist.TodoListPresenter;
import gemini.castor.ui.client.page.content.office.todolist.form.TodoListFormPresenter;
import gemini.castor.ui.client.page.content.store.catalog.CatalogPresenter;
import gemini.castor.ui.client.page.content.store.catalog.categorycatalog.CategoryCatalogPresenter;
import gemini.castor.ui.client.page.content.store.catalog.productcatalog.ProductCatalogPresenter;
import gemini.castor.ui.client.page.content.store.pricelist.PriceListPresenter;
import gemini.castor.ui.client.page.content.store.pricelist.pricelistform.PriceListFormPresenter;
import gemini.castor.ui.client.page.content.store.searchproduct.SearchProductPresenter;
import gemini.castor.ui.client.page.content.store.searchproduct.searchproductform.SearchProductFormPresenter;
import gemini.castor.ui.client.page.content.store.shoppingcart.ShoppingCartPresenter;
import gemini.castor.ui.client.page.content.store.shoppingcart.cartcheckout.CartCheckOutPresenter;
import gemini.castor.ui.client.page.content.store.shoppingcart.shoppingcartview.ShoppingCartViewPresenter;
import gemini.castor.ui.client.page.footer.FooterPresenter;
import gemini.castor.ui.client.page.header.HeaderPresenter;
import ch.elca.gwt.mvp.client.EventBus;
import ch.elca.gwt.mvp.client.place.PlaceManager;

import com.google.gwt.core.client.GWT;
import com.google.gwt.inject.client.GinModules;
import com.google.gwt.inject.client.Ginjector;

@GinModules(CastorModule.class)
public interface CastorGinjector extends Ginjector {

    public static final CastorGinjector INSTANCE = GWT.create(CastorGinjector.class);

    PlaceManager getPlaceManager();
    EventBus getEventBus();
    PlaceRequestManager getPlaceRequestManager();

    RootPresenter getRootPresenter();
    HeaderPresenter getHeaderPresenter();
    FooterPresenter getFooterPresenter();
    
    /********************************************** 
     * Main content
     **********************************************/
    
    // Apply to Distributor
    ApplyPresenter getApplyPresenter();
    PersonalInfoFormPresenter getPersonalInfoFormPresenter();
    DistributorIDFormPresenter getDistributorIDFormPresenter();
    ContractAgreementFormPresenter getContractAgreementFormPresenter();
    CheckOutFormPresenter getCheckOutFormPresenter();
    
    //Register
    RegisterPresenter getRegisterPresenter();
    DistributorIDPresenter getDistributorIDPresenter();
    ConfirmInfoFormPresenter getConfirmInfoFormPresenter();
    InputAccountFormPresenter getInputAccountFormPresenter();
    
    //Search some one
    SearchPresenter getSearchPresenter();
    SearchFormPresenter getSearchFormPresenter();
    
    //Product Catalog
    CatalogPresenter getCatalogPresenter();
    ProductCatalogPresenter getProductCatalogPresenter();
    CategoryCatalogPresenter getCategoryCatalogPresenter();
    
    //Shopping Cart
    ShoppingCartPresenter getShoppingCartPresenter();
    ShoppingCartViewPresenter getShoppingCartViewPresenter();
    CartCheckOutPresenter getCartCheckOutPresenter();
    
    //Search Product
    SearchProductPresenter getSearchProductPresenter();
    SearchProductFormPresenter getSearchProductFormPresenter();
    
    //Price List
    PriceListPresenter getPriceListPresenter();
    PriceListFormPresenter getPriceListFormPresenter();
    
    //Account Info
    AccountInfoPresenter getAccountInfoPresenter();
    AccountInfoFormPresenter getAccountInfoFormPresenter();
    
    //Volume Point
    VolumePointPresenter getVolumePointPresenter();
    VolumePointFormPresenter getVolumePointFormPresenter();
    
    //My Order
    MyOrderPresenter getMyOrderPresenter();
    MyOrderFormPresenter getMyOrderFormPresenter();
    
    //My downline
    MyDownlinePresenter getMyDownlinePresenter();
    MyDownlineFormPresenter getMyDownlineFormPresenter();

    //My Sponsor
    MySponsorPresenter getMySponsorPresenter();
    MySponsorFormPresenter getMySponsorFormPresenter();
    
    //My Story
    MyStoryPresenter getMyStoryPresenter();
    MyStoryFormPresenter getMyStoryFormPresenter();
  
    //Events
    EventsPresenter getEventsPresenter();
    EventsListPresenter getEventsListPresenter();
    EventsEditPresenter getEventsEditPresenter();

    //Messeger Center
    MessegerCenterPresenter getMessegerCenterPresenter();
    MessegerCenterFormPresenter getMessegerCenterFormPresenter();

    //News
    NewsPresenter getNewsPresenter();
    NewsFormPresenter getNewsFormPresenter();

    //Promotions
    PromotionsPresenter getPromotionsPresenter();
    PromotionsFormPresenter getPromotionsFormPresenter();

    //Recognitions
    RecognitionsPresenter getRecognitionsPresenter();
    RecognitionsFormPresenter getRecognitionsFormPresenter();

    //TodoList
    TodoListPresenter getTodoListPresenter();
    TodoListFormPresenter getTodoListFormPresenter();
    
    //Care Schedule
	CareSchedulePresenter getCareSchedulePresenter();
	CareScheduleFormPresenter getCareScheduleFormPresenter();
	
	//Customer List
	CustomerPresenter getCustomerPresenter();
	CustomerListPresenter getCustomerListPresenter();
	CustomerEditPresenter getCustomerEditPresenter();
	
	//Success Stories
	SuccessStoriesPresenter getSuccessStoriesPresenter();
	SuccessStoriesFormPresenter getSuccessStoriesFormPresenter();
	
	//Step By Step
	StepByStepPresenter getStepByStepPresenter();
	StepByStepFormPresenter getStepByStepFormPresenter();
	
	//Maketing Plan
	MaketingPlanPresenter getMaketingPlanPresenter();
	MaketingPlanFormPresenter getMaketingPlanFormPresenter();
	
	//Library
	LibraryPresenter getLibraryPresenter();
	LibraryFormPresenter getLibraryFormPresenter();
	
	//Bussiness Methods
	BussinessMethodsPresenter getBussinessMethodsPresenter();
	BussinessMethodsFormPresenter getBussinessMethodsFormPresenter();
	
	//About Company
	AboutCompanyPresenter getAboutCompanyPresenter();
	AboutCompanyFormPresenter getAboutCompanyFormPresenter();
	
	//About Product
	AboutProductPresenter getAboutProductPresenter();
	AboutProductFormPresenter getAboutProductFormPresenter();
}
